// index/pages/examFrontierDetail/examFrontierDetail.js
const { http } = require('../../../utils/http.js');

// 配置选项 - 可以在这里调整后端服务地址
const API_CONFIG = {
  // 后端服务地址 - 根据您的实际后端服务地址修改
  BASE_URL: 'http://localhost:8080', // 如果后端运行在8080端口，请修改这里
};

// 创建自定义的HTTP实例，使用页面配置的BASE_URL
const customHttp = new (require('../../../utils/http.js').HttpUtil)({
  BASE_URL: API_CONFIG.BASE_URL
});

Page({
  data: {
    examIntro: null,
    loading: true
  },
  
  onLoad(options) {
    const id = options.id;
    if (id) {
      this.loadExamIntroDetail(id);
    }
  },
  
  /**
   * 加载考试前沿详情
   */
  loadExamIntroDetail(id) {
    this.setData({ loading: true });
    
    // 从本地存储获取数据
    const examIntro = wx.getStorageSync('examIntroDetail');
    
    if (examIntro && examIntro.id == id) {
      // 确保数据格式正确
      const formattedData = this.formatExamIntroData(examIntro);
      this.setData({
        examIntro: formattedData,
        loading: false
      });
    } else {
      // 如果本地没有数据，则从接口获取
      this.fetchExamIntroDetail(id);
    }
  },
  
  /**
   * 格式化考试前沿数据
   */
  formatExamIntroData(data) {
    console.log('原始数据:', data);
    
    // 确保标题和内容不重复
    let title = data.title || '无标题';
    let content = data.content || data.fullContent || '暂无内容';
    
    // 如果内容和标题完全一样，尝试从其他字段获取内容
    if (content === title && data.fullContent) {
      content = data.fullContent;
    }
    
    // 如果仍然一样，尝试从后端原始数据获取
    if (content === title && data.originalContent) {
      content = data.originalContent;
    }
    
    // 清理HTML标签，只保留纯文本内容
    title = this.cleanHtmlTags(title);
    content = this.cleanHtmlTags(content);
    
    const result = {
      id: data.id,
      title: title,
      content: content,
      imageUrl: data.imageUrl || '/images/makesi.jpg',
      createTime: data.createTime || data.date,
      date: this.formatDate(data.createTime || data.date)
    };
    
    console.log('格式化后数据:', result);
    return result;
  },
  
  /**
   * 清理HTML标签，提取纯文本内容
   */
  cleanHtmlTags(htmlString) {
    if (!htmlString || typeof htmlString !== 'string') {
      return htmlString || '';
    }
    
    // 移除HTML标签
    let cleanText = htmlString
      .replace(/<[^>]*>/g, '')  // 移除所有HTML标签
      .replace(/&nbsp;/g, ' ')   // 替换&nbsp;为空格
      .replace(/&amp;/g, '&')    // 替换&amp;为&
      .replace(/&lt;/g, '<')     // 替换&lt;为<
      .replace(/&gt;/g, '>')     // 替换&gt;为>
      .replace(/&quot;/g, '"')   // 替换&quot;为"
      .replace(/&#39;/g, "'")    // 替换&#39;为'
      .replace(/\s+/g, ' ')      // 合并多个空格
      .trim();                   // 去除首尾空格
    
    // 如果清理后为空，返回原始内容
    if (!cleanText) {
      cleanText = htmlString;
    }
    
    return cleanText;
  },
  
  /**
   * 从接口获取考试前沿详情
   */
  fetchExamIntroDetail(id) {
    // 使用自定义HTTP实例，确保使用正确的BASE_URL
    customHttp.get(`/hyg/intro/${id}`)
      .then(res => {
        if (res.data) {
          const examIntro = this.formatExamIntroData(res.data);
          
          this.setData({
            examIntro: examIntro,
            loading: false
          });
        } else if (res.rows && res.rows.length > 0) {
          // 如果返回的是rows数组，取第一个
          const examIntro = this.formatExamIntroData(res.rows[0]);
          
          this.setData({
            examIntro: examIntro,
            loading: false
          });
        } else {
          this.setData({ loading: false });
          wx.showToast({
            title: '数据不存在',
            icon: 'none'
          });
        }
      })
      .catch(err => {
        console.error('获取考试前沿详情失败:', err);
        this.setData({ loading: false });
        
        // 根据错误类型显示不同的提示信息
        let errorMessage = '获取详情失败';
        if (err.code === 404) {
          errorMessage = '数据不存在或已被删除';
        } else if (err.code === 500) {
          errorMessage = '服务器内部错误';
        } else if (err.code === 403) {
          errorMessage = '权限不足，请检查登录状态';
        } else if (err.message && err.message.includes('网络请求失败')) {
          errorMessage = '网络连接失败，请检查网络设置';
        }
        
        wx.showToast({
          title: errorMessage,
          icon: 'none',
          duration: 3000
        });
      });
  },
  
  /**
   * 格式化日期
   */
  formatDate(dateStr) {
    if (!dateStr) return '';
    
    try {
      const date = new Date(dateStr);
      const year = date.getFullYear();
      const month = String(date.getMonth() + 1).padStart(2, '0');
      const day = String(date.getDate()).padStart(2, '0');
      return `${year}年${month}月${day}日`;
    } catch (e) {
      return dateStr;
    }
  },
  
  /**
   * 分享功能
   */
  onShareAppMessage() {
    const { examIntro } = this.data;
    if (examIntro) {
      return {
        title: examIntro.title || '考试前沿',
        path: `/index/pages/examFrontierDetail/examFrontierDetail?id=${examIntro.id}`
      };
    }
    return {
      title: '考试前沿',
      path: '/index/pages/examFrontier/examFrontier'
    };
  }
});
